home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SECURITY / MNGLR140 / PASLEX.L < prev    next >
Text File  |  1996-05-01  |  2KB  |  82 lines

  1. %{
  2. {*
  3.  
  4. Pascal lexical analyzer
  5.  
  6. *}
  7. %}
  8.  
  9. NQUOTE    [^']
  10. DQUOTE    [^}]
  11.  
  12. %%
  13.  
  14. %{
  15. var
  16.   kw : integer;
  17.   Stop : Boolean;
  18. %}
  19.  
  20. [a-zA-Z_]([a-zA-Z0-9_])*  begin
  21.                             yytext := UpStr(yytext);
  22.                             if is_keyword(yytext, kw)
  23.                              then  return(kw)
  24.                              else  return(IDENTIFIER);
  25.                           end;
  26.  
  27.  
  28. [-]?[0-9]+([.][0-9])?[E](([-]|[+])?[0-9]+)? |
  29. [0-9]+"."[0-9]+           |
  30. [$]([0-9a-fA-F])+         |
  31. [0-9]+                    return(NUMBER);
  32.  
  33. "#"([0-9])+               |
  34. "#$"([0-9a-fA-F])+        return(_CHAR);
  35.  
  36.  
  37. ":"                       return(COLON);
  38. ";"              return(SEMICOLON);
  39. "."              return(DOT);
  40. ".."              return(DOTDOT);
  41. ":="                      return(ASSIGNMENT);
  42. "="                       return(EQUAL);
  43. "("              return(LPAREN);
  44. ")"                       return(RPAREN);
  45. "["                       return(LBRAC);
  46. "]"                       return(RBRAC);
  47. ","                       return(COMMA);
  48. ">="              return(GE);
  49. "<="              return(LE);
  50. "<>"              return(NOTEQUAL);
  51.  
  52. "^"              return(UPARROW);
  53.  
  54. '({NQUOTE}|'')*'          return(CHARACTER_STRING);
  55.  
  56. "{$"({DQUOTE})*"}"        return(DIRECTIVE);
  57.  
  58. "(*"                      begin
  59.                             Stop := FALSE;
  60.                             repeat
  61.                               if (get_char = '*') and (get_char = ')') then
  62.                                 Stop := TRUE;
  63.                             until Stop;
  64.                           end;
  65.  
  66. "{"                       begin
  67.                 repeat
  68.                             until get_char = '}';
  69.                           end;
  70.  
  71. [ \t\f]              ;
  72.  
  73. \n                        begin
  74.                             if Random(50) = 25 then
  75.                               WriteProgress;
  76.                           end;
  77.  
  78. \0                        ;
  79.  
  80. .                         return(OTHER);
  81.  
  82. %%